Packet communications devices, systems, and networks have gained widespread use worldwide. However, they have also become more sophisticated and complex even as they become ubiquitous and crucial to the activities of enterprises and users. Manufacturers, vendors, and users therefore have a greater need for testing such systems; unfortunately, the increasing complexity of such data communication devices and systems makes them harder to test. The recent advent of wireless networks have further multiplied this difficulty, as wireless devices employ more complex connection-oriented stateful protocols running over a contention-based shared radio frequency (RF) medium and often having to support traffic with strict Quality of Service (QoS) guarantees such as voice.
With reference to FIG. 1, an exemplary wireless data communications network is represented, consisting of a number of client (user) stations 1, 2, 3 communicating with an access point (AP) 4. Clients 1, 2, 3 share a common RF channel 5, and thus must contend with each other when attempting to transmit packets to AP 4. In some cases two or more of clients 1-3 may even collide when attempting to transmit a packet, such collisions being indicated by 6, 7. Similarly AP 4 must contend with clients 1, 2, 3 for access to the RF channel in order to transmit packets to them, and other collisions may result.
With reference to FIG. 2, an example of multiple traffic flows supported by a single wireless client 1 is shown. When client 1 gains access to the shared RF channel 5 for a period of time 10 after successfully contending with the other clients 2, 3 that may also desire to gain access, it must then multiplex one or more packets from the traffic flows 14, 15, 16 on to the medium. Other periods of time 11, 12 may be occupied by other clients 2, 3. When client 1 regains access to the medium during time 13, it must make a determination as to which traffic flows are to be transmitted (based on user-specified QoS and bandwidth parameters) and multiplex packets from other traffic flows on to the medium. As a consequence the packet sequence observed on the RF channel may be very complex indeed, and subject to a variety of constraints and protocol functions.
The shared-medium aspect of wireless data communication devices poses a particularly intricate problem in testing. Most wired networks use contention-free switched media of a highly predictable nature, and thus can be tested with relatively simple communication test systems generating fixed, predefined sequences of packets to represent various streams of traffic. Wireless networks, on the other hand, employ contention between clients and access points to regulate access to the shared radio channel, together with random backoff and recovery schemes to mitigate and recover from the effects of collisions between stations. This makes the traffic patterns actually observed on the channel quite unpredictable. Thus wireless data communication devices are not amenable to testing using simple, predefined sequences of packets.
A further complexity is the presence of delay and bandwidth sensitive traffic such as voice and video in modern networks. A communications system carrying such traffic may need to reprioritize or reorder certain packets or sequences of packets in order to meet the QoS requirements of different types of traffic, and ensure that delay and bandwidth guarantees are met. The test systems for such devices and networks will therefore have to generate and analyze traffic conforming to different kinds of QoS requirements in order to properly test them. Again, conventional test systems have difficulty in meeting such requirements.
Yet a further complexity is the need to test traffic flows associated with stateful, connection-oriented protocols. One example of such a protocol, at Layer 2 of the ISO/OSI protocol hierarchy, is the IEEE 802.11 wireless LAN protocol. Another example of such a protocol is the Transmission Control Protocol (TCP), which is at Layer 4 of the ISO/OSI protocol hierarchy. Such stateful protocols can cause some traffic flows to stop and restart unpredictably, as the protocol state machines respond to such network events as mobility (roaming) and congestion, while other traffic flows continue unhindered. As a consequence, not only must the test systems for devices and networks implementing such stateful protocols be capable of generating traffic having these unpredictable characteristics, but these test systems must also be capable of responding correctly to state transitions in the device under test (DUT). Again, conventional test systems have difficulty in meeting such requirements.
With reference to FIG. 3, an exemplary illustration of one approach heretofore taken in the prior art for creating a communications test system is shown. This may include an array of computers 20, 21, 22 such as laptops, workstations, or embedded computers, that support software programs to generate stateful traffic. Each computer may generate one or more test data flows to represent the different traffic flows normally generated by a real client. The packet data streams 23, 24, 25 generated by the different computers 20, 21, 22, respectively, may be multiplexed into a single stream 26 by multiplexing function 27 and applied to DUT 28. Multiplexing may be done by software or digital logic in the case of wired network test systems, or by arrays of RF combiners and attenuators in the case of wireless network test systems. Contention may be emulated by directly allowing the computers 20, 21, 22 to contend for medium access and even to collide with each other.
Several significant issues are observed with this approach. One is that the use of software programs to generate and multiplex test traffic leads to considerable problems with repeatability and controllability, due to the unpredictable delays and interactions incurred by software. The operating system used on the computers, for instance, significantly affects the behavior of such a test system. Another is that scaling such a system to handle high traffic loads and many clients is expensive and impractical. Yet another is that such systems are complex to configure and manage, especially as the number of computers grows large. Also, the overhead and performance problems incurred by the use of software programs to generate traffic prevents the test system from running at the theoretical maximum capacity of the physical medium, without excessive investment in hardware resources.
With reference to FIG. 4, an exemplary illustration of another approach taken in the prior art for creating a communications test system is shown. In this approach, a single Layer 2 Medium Access Control (MAC) device 30 is time-sliced into predetermined slots 31, 32, 33 to create the effect of multiple ‘virtual’ clients; each temporal slot may represent a different client. When a slot is active, the corresponding virtual client is permitted to send and receive traffic, and all other clients are usually effectively deactivated. Over a period of time, the effect observed is that of a number of different clients sharing a single medium and transmitting and receiving packets to/from DUT 28. Time-slicing may occur using hardware, firmware or software logic, and the protocol stacks of individual clients may likewise be supported using hardware, firmware, or software.
This approach, too, suffers from significant issues. The traffic generated by this method does not resemble real communications data traffic. Firstly, as only one client is active during each time slot, it is impossible to emulate contention or collisions. Secondly, a client cannot respond to traffic directed to it from the DUT when its timeslot is not active; unlike a real client, it will have to wait until its turn to transmit responses back to the DUT. Thirdly, the timeslots are fixed in duration and do not reflect the changing bandwidth and latency parameters of real network traffic, particularly those with QoS requirements. Finally, creating and assigning a pattern of timeslots is an intensive and time-consuming process; thus, if a client connection is dropped or a new client connection is set up, it is difficult or impossible to modify the timeslot pattern in order to change the bandwidth assignments of the other clients to compensate.
Note that the above mentioned issues and requirements pertain to wired as well as wireless communications test systems. Heretofore, these issues and requirements have not received much attention in wired test systems because of the relatively predictable nature of wired network data traffic at ISO/OSI Layers 3 and below, where much of the testing has been focused. In addition, testing QoS functions for wired data traffic has hitherto not received much attention. However, with the increasing emphasis on testing stateful, connection-oriented higher layer protocols (Layer 4 and above) and the increasing need for QoS in data communication networks, it is important to create data communication test systems capable of dealing with such issues.
Accordingly, there is a need for improved data communication test techniques. A test system that can emulate the behavior of multiple stations or clients contending for a shared medium or channel in a controllable and repeatable manner may be desirable. Further, such a test system may preferably emulate the behavior of stateful, connection-oriented protocols at various protocol layers. Also, such a test system may emulate multiple traffic streams with different QoS requirements on each client. It is also desirable for the test system to be able to efficiently scale to large numbers of emulated clients and flows in a practical manner.